package com.wms.mapper;

import com.wms.dto.SaveActualQtyCountDTO;
import com.wms.dto.SaveActualQtyDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface SaveTaskDetailActualQtyMapper {
    /**
     * 更新任务状态
     * @param taskId
     * @param status
     * @return
     */
    int updateTaskStatus(@Param("taskId") Integer taskId, @Param("status") Integer status);
    /**
     * 根据任务详情id保存实际盘点数量
     * @param saveActualQtyDTOList
     * @return
     */
    int SaveTaskDetailActualQty(@Param("saveActualQtyDTOList") List<SaveActualQtyDTO> saveActualQtyDTOList);

    /**
     * 根据任务编码查询任务ID
     * @param taskCode
     * @return
     */
    int queryTaskDetailById(@Param("taskCode")String taskCode);

    /**
     * 验证任务明细ID是否属于指定任务
     * @param taskId 任务ID
     * @param detailIds 明细ID列表
     * @return 有效的明细数量
     */
    int validateTaskDetailIds(@Param("taskId") Integer taskId, @Param("detailIds") List<Integer> detailIds);

    /**
     * 查询任务下已完成的详情数量
     * @param taskId
     * @return
     */
    int queryCompletedDetailCount(@Param("taskId") Integer taskId);

    /**
     * 查询任务下总的详情数量
     * @param taskId
     * @return
     */
    int queryTotalDetailCount(@Param("taskId") Integer taskId);

    /**
     * 保存差异数量
     * @param saveActualQtyDTOList
     * @return
     */
    int saveTaskDetailDiffQty(@Param("saveActualQtyDTOList") List<SaveActualQtyDTO> saveActualQtyDTOList);

    /**
     * 修改有无报损状态
     * @param saveActualQtyDTOList
     * @return
     */
    int updateTaskDetailBreakage(@Param("saveActualQtyDTOList") List<SaveActualQtyDTO> saveActualQtyDTOList);
}
